package com.comprehensive.dataservice.entity;

import com.baomidou.mybatisplus.annotation.FieldFill;
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import jakarta.persistence.Id;
import jakarta.persistence.MappedSuperclass;

import java.io.Serializable;
import java.time.LocalDateTime;

@MappedSuperclass
public class BaseEntity implements Serializable {
    private static final long serialVersionUID = 1L;
    /**
     * 主键ID
     */
    @Id
    @TableId(value = "id", type = IdType.AUTO)
    private Long id;
    /**
     * 排序号
     */
    private Integer sort;
    /**
     * 是否启用：0-禁用，1-启用
     */
    @TableField(fill = FieldFill.INSERT)
    private Integer enabled;
    /**
     * 创建时间
     */
    @TableField(fill = FieldFill.INSERT)
    private LocalDateTime createTime;
    /**
     * 更新时间
     */
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private LocalDateTime updateTime;
    
    /**
     * 获取主键ID
     * @return 主键ID
     */
    public Long getId() {
        return id;
    }
    
    /**
     * 设置主键ID
     * @param id 主键ID
     */
    public void setId(Long id) {
        this.id = id;
    }
    
    /**
     * 获取排序号
     * @return 排序号
     */
    public Integer getSort() {
        return sort;
    }
    
    /**
     * 设置排序号
     * @param sort 排序号
     */
    public void setSort(Integer sort) {
        this.sort = sort;
    }
    
    /**
     * 获取启用状态
     * @return 启用状态（0-禁用，1-启用）
     */
    public Integer getEnabled() {
        return enabled;
    }
    
    /**
     * 设置启用状态
     * @param enabled 启用状态（0-禁用，1-启用）
     */
    public void setEnabled(Integer enabled) {
        this.enabled = enabled;
    }
    
    /**
     * 获取创建时间
     * @return 创建时间
     */
    public LocalDateTime getCreateTime() {
        return createTime;
    }
    
    /**
     * 设置创建时间
     * @param createTime 创建时间
     */
    public void setCreateTime(LocalDateTime createTime) {
        this.createTime = createTime;
    }
    
    /**
     * 获取更新时间
     * @return 更新时间
     */
    public LocalDateTime getUpdateTime() {
        return updateTime;
    }
    
    /**
     * 设置更新时间
     * @param updateTime 更新时间
     */
    public void setUpdateTime(LocalDateTime updateTime) {
        this.updateTime = updateTime;
    }
}